package com.xunsiya.service.module.order;

import com.xunsiya.module.order.vo.Order;
import com.xunsiya.module.order.vo.OrderDetail;
import com.xunsiya.module.order.vo.OrderDto;
import com.xunsiya.system.vo.Company;
import com.xunsiya.tools.common.msg.Msg;

import java.util.List;

/**
 * 订单服务
 *
 * @author panjun
 * @version 1.0
 *          <p>
 *          <p>修订人		修订时间			描述信息
 *          <p>-----------------------------------------------------
 *          <p>panjun		2018/10/31		初始创建
 */
public interface OrderService {

    /**
     * 查询用户订单
     * @param userId 用户编号
     * @return
     */
    public List<Order> findByUserId(Integer userId);

    /**
     * 查询订单详情
     * @param ids 订单编号
     * @return
     */
    public List<OrderDetail> findOrderDetailsByOrderIds(List<Long> ids);

    /**
     * 添加订单
     * @param orderDto 订单对象
     * @return
     */
    public boolean save(OrderDto orderDto);

    /**
     * 添加订单详情
     * @param orderDetail 订单详情
     * @return
     */
    public boolean saveOrderDetail(OrderDetail orderDetail);

    /**
     * 分页查询公司订单
     * @param companyIds 公司编号集合
     * @param pageIndex  开始页
     * @param pageSize   每页大小
     * @return
     */
    public List<Order> findByCompanyId(List<Integer> companyIds, int pageIndex, Integer pageSize);

    /**
     * 查询存在的订单详情
     * @param parentId 产品父编号
     * @param companyId 公司编号
     * @return OrderDetail
     */
    public OrderDetail findByCompanyIdAndParentId(Integer companyId, Integer parentId);

    /**
     * 分页查询订单
     * @param company 公司
     * @param pageIndex 开始页
     * @param pageSize  每页大小
     * @return
     */
    public Msg queryForPage(Company company, Integer pageIndex, Integer pageSize);
}
